/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package DAO;

import DAO.util.ConectaBanco;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import model.Fornecedor;

/**
 *
 * @author Alberto
 */
public class FornecedorDAO {
    public boolean criar(Fornecedor fornecedor) {
        try {
            Connection conexao = ConectaBanco.getConexao();

            String sql = "insert into fornecedor(nome,status) values (?,1)";
            // seta os parametros no sql
            PreparedStatement pstmt = conexao.prepareCall(sql);
                 
            pstmt.setString(1, fornecedor.getNome());
            

            System.out.println(sql);
            pstmt.execute();

            conexao.close();
            return true;

        } catch (SQLException sql) {

            return false;

        }
    }

    public ArrayList<Fornecedor> buscarTodas(String nome) throws ClassNotFoundException {
        ArrayList<Fornecedor> fornecedores = new ArrayList<Fornecedor>();
        Connection conexao = null;
        try {
            conexao = ConectaBanco.getConexao();
            String sql = "select * from fornecedor where nome ilike ? and status=1";


            PreparedStatement pst = conexao.prepareStatement(sql);

            pst.setString(1, nome + "%");
            ResultSet rs = pst.executeQuery();
           



            while (rs.next()) {
                Fornecedor fornecedor = new Fornecedor();
               
                fornecedor.setNome(rs.getString("nome"));
                fornecedor.setId(rs.getInt("id"));
              
                fornecedores.add(fornecedor);
            }
            conexao.close();
            return fornecedores;

        } catch (SQLException sql) {
            return null;
        }

    }
    public Fornecedor buscarLoginByCodigo(int codigo) throws ClassNotFoundException, SQLException {
        Connection conexao = ConectaBanco.getConexao();
        PreparedStatement sql = conexao.prepareStatement("select * from fornecedor where id = ? and status=1");
        sql.setInt(1, codigo);
        ResultSet resultado = sql.executeQuery();

        Fornecedor fornecedor = new Fornecedor();
        while (resultado.next()) {
            fornecedor.setNome(resultado.getString("nome"));
            fornecedor.setId(resultado.getInt("id"));

        }
        conexao.close();
        return fornecedor;
    }
    
        public Fornecedor buscarPorNome(String nome) throws ClassNotFoundException, SQLException {
        Connection conexao = ConectaBanco.getConexao();
        PreparedStatement sql = conexao.prepareStatement("select * from fornecedor where nome = ? and status=1");
        sql.setString(1, nome);
        ResultSet resultado = sql.executeQuery();

        Fornecedor fornecedor = new Fornecedor();
        while (resultado.next()) {
            fornecedor.setNome(resultado.getString("nome"));
            fornecedor.setId(resultado.getInt("id"));

        }
        conexao.close();
        return fornecedor;
    }
    
    public boolean atualizar(Fornecedor fornecedor) {
        try {
            Connection conexao = ConectaBanco.getConexao();

            String sql = "update fornecedor set nome=? where id=?";

            PreparedStatement pstmt = conexao.prepareCall(sql);
            pstmt.setString(1, fornecedor.getNome());
            pstmt.setInt(2, fornecedor.getId());

            
            pstmt.execute();
            System.out.println("Cadastro realizado com sucesso");
            conexao.close();
            return true;
        } catch (SQLException sql) {
            System.out.println("Erro ao atualizar registro");
           
            return false;

        }
    }

    public boolean marcarInativo(int id) {
        try {
            Connection conexao = ConectaBanco.getConexao();
            String sql = "update fornecedor set status=0 where id = ?";

            PreparedStatement pstmt = conexao.prepareCall(sql);

            pstmt.setInt(1, id);


            pstmt.execute();

            conexao.close();
            return true;
        } catch (SQLException sql) {
        
            return false;

        }
    }

   

    
}
